package ${basePackage}.core.aware;

import ${basePackage}.core.constants.Constants;
import ${basePackage}.core.model.PageWrap;

/**
 * 数据权限意识
 * @author Eva.Caesar Liu
 * @since 2023/08/27 15:22
 */
public interface DataPermissionAware<T> {

    /**
     * 默认数据（当用户未配置相关数据权限时获取该数据）
     *
     * @param userId 用户ID
     * @return T
     */
    default T defaultData(Integer userId) {
        return null;
    }

    /**
     * 默认数据（当用户未配置相关数据权限时获取该数据）
     *
     * @param pageWrap 分页参数
     * @return T
     */
    default T defaultData(PageWrap pageWrap) {
        return null;
    }

    /**
     * 默认数据（当用户未配置相关数据权限时获取该数据）
     *
     * @param userId 用户ID
     * @param pageWrap 分页参数
     * @return T
     */
    default T defaultData(Integer userId, PageWrap pageWrap) {
        return null;
    }

    /**
     * 获取模块对象
     *
     * @return Constants.DataPermission.Module
     */
    Constants.DataPermission.Module module();
}
